Enviado por: Electros
Fecha: 2003-06-15 02:41:41
Actualizado: 2004-02-05 18:27:08
¿Usa base de datos?: 1
Visitas: 218
Votos: 0
Descargado: 539 veces
Valoración: 0.00
» Valora este script «
ZipDescargar

[b]Aviso:[/b] Gracias a [b]kzale[/b] que me di� informaci�n detallada de los errores que ten�a este script, lo he actualizado y ya debe funcionar correctamente. Con este script todos tus usuarios tendr�n un perfil de usuario que podr�n editar en cualquier momento, tambi�n podr�s mostrar una lista de todo los usuarios registrados de tu web en el cu�l podr�s ver el perfil de cada uno de ellos. El script se compone de 3 archivos: [b]uperfil.php[/b] [b]ueditar.php[/b] [b]usuarios.php[/b] El funcionamiento de los archivos es el siguiente: [b]uperfil.php[/b] En esta p�gina el usuario podr� editar su perfil. [b]ueditar.php[/b] Esta p�gina procesar� el formulario y actualizar� los datos en la base de datos. [b]usuarios.php[/b] Esta p�gina mostrar� todos los usuarios registrados de tu web, y tambi�n podr�s ver el perfil de cada usuario. Las p�ginas de uperfil.php y usuarios.php puedes enlazarlas directamente o meterlas en otra p�gina, la p�gina de ueditar.php debe estar totalmente s�la o te dar� errores. Primero hay que actualizar la tabla de los usuarios y agregar los campos que hacen falta, para esto mete el siguiente c�digo en el phpMyAdmin: [codigo]alter table usuarios add pais varchar(20) not null, add edad tinyint(2) unsigned not null, add sexo enum('0','1') not null, add descripcion tinytext not null after email[/codigo] Ahora crea la p�gina uperfil.php con el siguiente c�digo: [codigo]<? include("ulogin.php") ; ?> <? include("config.php") ; $resp = mysql_query("select * from usuarios where nick='$HTTP_COOKIE_VARS[unick]'") ; $datos = mysql_fetch_array($resp) ; if($editarconfirmacion) { echo "Tus datos han sido editados con �xito. Haz click <a href=index.php>aqu�</a> para regresar a la p�gina principal.<br><br>" ; } // Si no se pone la edad esta se guarda como cero, para evitar mostrar el cero se hace lo siguiente if($datos[edad] == 0) { $datos[edad] = "" ; } // El sexo se guarda como 0 y 1 que es masculino y femenino respectivamente, si se elige femenino la opci�n debe aparecer seleccionada // aparecer seleccionada if($datos[sexo] == 1) { $sexo = " selected" ; } // Mostrar la fecha en texto $fecha = $datos[fecha] ; $diassemana = array("Domingo","Lunes","Martes","Mi�rcoles","Jueves","Viernes","S�bado") ; $mesesano = array("Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic") ; $diasemana = date(w,$fecha) ; $diames = date(j,$fecha) ; $mesano = date(n,$fecha) - 1 ; $ano = date(Y,$fecha) ; $fecha = "$diassemana[$diasemana] $diames de $mesesano[$mesano] del $ano" ; ?> <p class="titulo">Perfil <p><b>Usuario desde el:</b> <? echo $fecha ?> <p>En esta secci�n puedes editar tus datos de registro. Los campos con un asterisco (*) son obligatorios. <script> function revisar() { if(formulario.contrasena.value.length < 5) { alert('La contrase�a debe contener por lo m�nimo 5 caract�res.') ; return false ; } if(formulario.email.value.length == 0) { alert('Debes poner un email v�lido.') ; return false ; } if(formulario.descripcion.value.length > 255) { alert('La descripci�n supera los 255 caract�res.') ; return false ; } } </script> <form name="formulario" method="post" action="ueditar.php" onsubmit="return revisar()"> <b>* Nick:</b><br> <input type="text" name="nick" value="<? echo $datos[nick] ?>" class="form" style="color: #757575" readonly><br> <b>* Contrase�a:</b><br> <input type="password" name="contrasena" maxlength="20" value="<? echo $datos[contrasena] ?>" class="form"><br> <b>* Email:</b><br> <input type="text" name="email" maxlength="40" value="<? echo $datos[email] ?>" class="form"><br> <b>Pa�s:</b><br> <input type="text" name="pais" maxlength="20" value="<? echo $datos[pais] ?>" class="form"><br> <b>Edad:</b><br> <input type="text" name="edad" maxlength="2" size="3" value="<? echo $datos[edad] ?>" class="form"><br> <b>Sexo:</b><br> <select name="sexo" class="form"> <option value="0">Masculino <option value="1"<? echo $sexo ?>>Femenino </select><br> <b>Descripci�n:</b><br> <textarea name="descripcion" cols="30" rows="5" class="form" style="font-family: verdana"><? echo $datos[descripcion] ?></textarea><br><br> <input type="submit" name="editar" value="Editar" class="form"> </form> <? mysql_free_result($resp) ; mysql_close($conectar) ; ?>[/codigo] Ahora crea el archivo ueditar.php: [codigo]<? include("ulogin.php") ; ?> <? include("config.php") ; if($editar) { function quitar($texto) { $texto = trim($texto) ; $texto = htmlspecialchars($texto) ; return $texto ; } $contrasena = quitar($contrasena) ; $email = quitar($email) ; $pais = quitar($pais) ; $edad = quitar($edad) ; $descripcion = quitar($descripcion) ; mysql_query("update usuarios set contrasena='$contrasena',email='$email',pais='$pais', edad='$edad',sexo='$sexo',descripcion='$descripcion' where nick='$_COOKIE[unick]'") ; $contrasena = md5(md5($contrasena)) ; setcookie("ucontrasena",$contrasena,time()+7776000) ; header("location: uperfil.php?editarconfirmacion=si") ; } mysql_close($conectar) ; ?>[/codigo] Por �ltimo crea el archivo usuarios.php: [codigo]<? include("config.php") ; echo " <p class=titulo>Usuarios " ; if($u) { $resp = mysql_query("select * from usuarios where id='$u'") ; $datos = mysql_fetch_array($resp) ; $fecha = $datos[fecha] ; $diassemana = array("Domingo","Lunes","Martes","Mi�rcoles","Jueves","Viernes","S�bado") ; $mesesano = array("Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic") ; $diasemana = date(w,$fecha) ; $diames = date(j,$fecha) ; $mesano = date(n,$fecha) - 1 ; $ano = date(Y,$fecha) ; $fecha = "$diassemana[$diasemana] $diames de $mesesano[$mesano] del $ano" ; if($datos[edad] == 0) { $edad = "" ; } else { $edad = $datos[edad] ; } $sexonumero = $datos[sexo] ; $sexotexto = array("Masculino","Femenino") ; echo " <p><b>Usuario desde el:</b> $fecha <p> <table width=100% border=0 cellpadding=5 cellspacing=0> <tr> <td><b>Nick:</b></td> <td>$datos[nick]</td> </tr> <tr> <td><b>Pa�s:</b></td> <td>$datos[pais]</td> </tr> <tr> <td><b>Edad:</b></td> <td>$edad</td> </tr> <tr> <td><b>Sexo:</b></td> <td>$sexotexto[$sexonumero]</td> </tr> <tr> <td><b>Descripci�n:</b></td> <td>$datos[descripcion]</td> </tr> </table> <p><a href=usuarios.php>Regresar a Usuarios</a> " ; } else { $resp = mysql_query("select id from usuarios") ; $usuarios = mysql_num_rows($resp) ; mysql_free_result($resp) ; $mostrar = 25 ; if(!$desde) { $desde = 0 ; } $resp = mysql_query("select id,nick,sexo,pais from usuarios order by id desc limit $desde,$mostrar") ; $desde = $desde + $mostrar ; echo " <p><b>Usuarios registrados en la web:</b> $usuarios <p> <table width=100% border=0 cellpadding=5 cellspacing=0> <tr bgcolor=#252525> <td width=50%><b>Nick</b></td> <td width=25%><b>Sexo</b></td> <td width=25%><b>Pa�s</b></td> </tr> " ; while($datos = mysql_fetch_array($resp)) { $sexonumero = $datos[sexo] ; $sexotexto = array("Masculino","Femenino") ; echo " <tr> <td><a href=usuarios.php?u=$datos[id]>$datos[nick]</a></td> <td>$sexotexto[$sexonumero]</td> <td>$datos[pais]</td> </tr> " ; } echo " </table> " ; if($desde > $mostrar) { $anteriores = $mostrar * 2 ; if($desde == $anteriores) { echo "<p align=right><a href=?ver=usuarios>Anteriores $mostrar usuarios</a> | " ; } else { $anteriores = $desde - $mostrar * 2 ; echo "<p align=right><a href=?ver=usuarios&desde=$anteriores>Anteriores $mostrar usuarios</a> | " ; } } else { echo "<p align=right>" ; } if($desde < $usuarios) { echo "<a href=?ver=usuarios&desde=$desde>Siguientes $mostrar usuarios</a>" ; } } ?>[/codigo] [b]Explicaci�n de su uso[/b] El archivo uperfil.php puedes ponerlo en el men� de usuario registrado, para que de esta forma el usuario tenga acceso a su perfil y lo pueda editar cuando el lo desee. El archivo ueditar.php debe estar totalmente s�lo, si usas un sistema de enlaces del tipo index.php?id=pagina no metas la p�gina de ueditar.php o te dar� errores de Cannot add headers. La p�gina usuarios.php puedes ponerla en cualquier parte de tu web ya que sirve para mostrar a todos los usuarios registrados de tu web y para poder ver su perfil. Listo el script para ver el perfil de los usuarios est� terminado, ahora ve al siguiente script [b]Registro de usuarios 5 - Mensajes[/b]. Para cualquier duda pueden entrar en el foro.